<?php
/**
 * Controller_Admin_Finist
 *
 * Класс Controller_Admin_Finist отвечает за обработку таблицы финист в админке
 *
 * @author Дмитрий Кузьма <kouzma.d@gmail.com>
 * @version 1.0
 */
class Controller_Admin_Finist extends Controller_Admin {

	/**
	 * Выбор действия по URL
	 *
	 */
	public function action() {
		Service_Debug::setDebug();
		switch ($this->arrRequest[2]) {
			case '': 
				$this->actionIndex();
			  break;
	  	case 'company':
				if (empty($this->arrRequest[3])) throw new Exception_SiteError('', 404);
				$objCompany = new Company(intval($this->arrRequest[3]));
				if (!$objCompany->id) throw new Exception_SiteError('', 404);
				$this->actionCompany($objCompany);
			  break;
	  	case 'companies':
				$this->actionCompanies();
			  break;
	  	case 'managers':
				$this->actionManagers();
			  break;
	  	case 'car_types':
				$this->actionCarTypes();
			  break;
	  	case 'price_types':
				$this->actionPriceTypes();
			  break;
	  	case 'days':
				$this->actionDays();
			  break;
	  	case 'week_days':
				$this->actionWeekDays();
			  break;
			case 'parse':
				$this->actionParse();
				break;
			default: throw new Exception_SiteError('', 404);
		}
	}

	/**
	 * Выводит сводную информацию по статистике
	 * 
	 */
	public function actionIndex() {
	  Service_Debug::setDebug();
	  $objFinist = new Finist();
	  $totalAmount = $objFinist->count();
	  
	  //$arrArticles = $objArticle->find('all', array('order' => "article_name_ru ASC"));
	  $startMonth = '2012-07-01';
	  $objFinist = new Finist();
	  //$endMonth = date('Y-m-t',Service_Date::getTimestamp($startMonth));
	  $arrStat = array();
	  $arrStat['total'] = $objFinist->getStat();
	  for ($i = 0; $i < 10; $i++) {
	  	$arrMonthStat = $objFinist->getStat($startMonth);
	  	if (!$arrMonthStat) break;
	  	$arrStat['monthly'][$startMonth] = $arrMonthStat;
	  	$startMonth = date('Y-m-01', Service_Date::getTimestamp($startMonth) - Service_Date::$timestampOneDayInterval * 2);
	  }
	  
	  
	  
	  $this->title = $this->pageHead = 'Информация по таблице Финист';

	  $objViewFinist = new View_Finist();
	  
	  $this->showHeader();
	  	$objViewFinist->showAllStat($arrStat);
		$this->showFooter();
	}
	
	/**
	 * Выводит спсиок популярных компаний
	 * 
	 */
	public function actionCarTypes() {
	  Service_Debug::setDebug();
	  $dateStart = Service_Escape::requestDataString('date_start', 'GET');
	  $sateStop = Service_Escape::requestDataString('date_stop', 'GET');
	  $objFinist = new Finist();
	  
	  $arrStat = $objFinist->getCarTypesStat($dateStart, $sateStop);
		
	  $this->title = $this->pageHead = 'Информация по тиам машин по таблице Финист';

	  $objViewFinist = new View_Finist();
	  
	  $this->showHeader();
	 		echo '<a href="' . W_ADMIN . 'finist/car_types/">Всего</a> &nbsp; ';
	 		echo '<a href="' . W_ADMIN . 'finist/car_types/?date_start=2012-06-01&date_stop=2012-06-30">За июнь</a>';
	  	$objViewFinist->showAllStatByCarTypes($arrStat);
		$this->showFooter();
	}
	
	/**
	 * Выводит разбивку по ценам
	 * 
	 */
	public function actionPriceTypes() {
	  Service_Debug::setDebug();
	  $dateStart = Service_Escape::requestDataString('date_start', 'GET');
	  $sateStop = Service_Escape::requestDataString('date_stop', 'GET');
	  $objFinist = new Finist();
	  
	  $arrStat = $objFinist->getPriceTypesStat($dateStart, $sateStop);
		
	  $this->title = $this->pageHead = 'Информация по категорм цен по таблице Финист';

	  $objViewFinist = new View_Finist();
	  
	  $this->showHeader();
	 		echo '<a href="' . W_ADMIN . 'finist/price_types/">Всего</a> &nbsp; ';
	 		echo '<a href="' . W_ADMIN . 'finist/price_types/?date_start=2012-06-01&date_stop=2012-06-30">За июнь</a>';
	  	$objViewFinist->showAllStatByPriceTypes($arrStat);
		$this->showFooter();
	}
	
	/**
	 * Выводит разбивку по дням
	 * 
	 */
	public function actionDays() {
	  Service_Debug::setDebug();
	  $dateStart = Service_Escape::requestDataString('date_start', 'GET');
	  $sateStop = Service_Escape::requestDataString('date_stop', 'GET');
	  $objFinist = new Finist();
	  
	  $arrStat = $objFinist->getDaysStat($dateStart, $sateStop);
		
	  $this->title = $this->pageHead = 'Информация по дням недели по таблице Финист';

	  $objViewFinist = new View_Finist();
	  
	  $this->showHeader();
	 		echo '<a href="' . W_ADMIN . 'finist/days/">Всего</a> &nbsp; ';
	 		echo '<a href="' . W_ADMIN . 'finist/days/?date_start=2012-06-01&date_stop=2012-06-30">За июнь</a>';
	  	$objViewFinist->showAllStatByDays($arrStat);
		$this->showFooter();
	}
	
	/**
	 * Выводит разбивку по дням недели
	 * 
	 */
	public function actionWeekDays() {
	  Service_Debug::setDebug();
	  $dateStart = Service_Escape::requestDataString('date_start', 'GET');
	  $sateStop = Service_Escape::requestDataString('date_stop', 'GET');
	  $objFinist = new Finist();
	  
	  $arrStat = $objFinist->getWeekDaysStat($dateStart, $sateStop);
		
	  $this->title = $this->pageHead = 'Информация по дням недели по таблице Финист';

	  $objViewFinist = new View_Finist();
	  
	  $this->showHeader();
	 		echo '<a href="' . W_ADMIN . 'finist/days/">Всего</a> &nbsp; ';
	 		echo '<a href="' . W_ADMIN . 'finist/days/?date_start=2012-06-01&date_stop=2012-06-30">За июнь</a>';
	  	$objViewFinist->showAllStatByWeekDays($arrStat);
		$this->showFooter();
	}
	
	/**
	 * Выводит спсиок менеджеров
	 * 
	 */
	public function actionManagers() {
	  Service_Debug::setDebug();
	  $dateStart = Service_Escape::requestDataString('date_start', 'GET');
	  $sateStop = Service_Escape::requestDataString('date_stop', 'GET');
	  $objFinist = new Finist();
	  
	  $arrStat = $objFinist->getManagersStat($dateStart, $sateStop);
		
	  $this->title = $this->pageHead = 'Информация по менеджерам по таблице Финист';

	  $objViewFinist = new View_Finist();
	  
	  $this->showHeader();
	 		echo '<a href="' . W_ADMIN . 'finist/managers/">Всего</a> &nbsp; ';
	 		echo '<a href="' . W_ADMIN . 'finist/managers/?date_start=2012-06-01&date_stop=2012-06-30">За июнь</a>';
	  	$objViewFinist->showAllStatByManagers($arrStat);
		$this->showFooter();
	}
	
	/**
	 * Выводит спсиок популярных компаний
	 * 
	 */
	public function actionCompanies() {
	  Service_Debug::setDebug();
	  if (!empty($_GET['order']) && $_GET['order'] == 'total_profit') $order = 'total_profit';
	  else $order = 'orders_amount';
	  $dateStart = Service_Escape::requestDataString('date_start', 'GET');
	  $sateStop = Service_Escape::requestDataString('date_stop', 'GET');
	  $objFinist = new Finist();
	  
	  $arrStat = $objFinist->getCompaniesStat($dateStart, $sateStop, $order);
		
	  $this->title = $this->pageHead = 'Информация по компаниям по таблице Финист';

	  $objViewFinist = new View_Finist();
	  
	  $this->showHeader();
	 		echo '<a href="' . W_ADMIN . 'finist/companies/?order=' . $order . '">Всего</a> &nbsp; ';
	 		echo '<a href="' . W_ADMIN . 'finist/companies/?order=' . $order . '&date_start=2012-06-01&date_stop=2012-06-30">За июнь</a>';
	  	$objViewFinist->showAllStatByCompanies($arrStat);
		$this->showFooter();
	}
	
	/**
	 * Выводит спсиок популярных компаний
	 * 
	 * @param Company $objCompany - объект компании по которой просматривается статистика
	 */
	public function actionCompany(Company $objCompany) {
	  Service_Debug::setDebug();
	  if (!empty($_GET['order']) && $_GET['order'] == 'profit') $order = 'profit';
	  else $order = 'ID_finist';
	  $dateStart = Service_Escape::requestDataString('date_start', 'GET');
	  $sateStop = Service_Escape::requestDataString('date_stop', 'GET');
	  $objFinist = new Finist();
	  
	  $arrStat = $objCompany->getFinistList($dateStart, $sateStop, $order);
		
	  $this->title = $this->pageHead = 'Информация по компании "' . $objCompany->getField('company_name') . '" по таблице Финист';

	  $objViewFinist = new View_Finist();
	  
	  $this->showHeader();
	 		echo '<a href="' . W_ADMIN . 'finist/company/' . $objCompany->id . '/?order=' . $order . '">Всего</a> &nbsp; ';
	 		echo '<a href="' . W_ADMIN . 'finist/company/' . $objCompany->id . '/?order=' . $order . '&date_start=2012-06-01&date_stop=2012-06-30">За июнь</a>';
	  	$objViewFinist->showOrdersList($arrStat);
		$this->showFooter();
	}
	
	/**
	 * Страница парсинга файла таблицы 
	 */
	public function actionParse() {
	  Service_Debug::setDebug();
		// получает содержимое файла в строку
		$filename = 'E:\AppServ\www\finist.csv';
		$handle = fopen($filename, "r");
		$fileContent = fread($handle, filesize($filename));
		fclose($handle);
		$objFinist = new Finist();
		$objFinist->parseFileContent($fileContent);
		echo 'Готово';
	}
	

	
}
?>